using System;
using System.Reflection;
using System.Runtime.CompilerServices;

namespace ns20
{
	internal class Class170 : Class167
	{
		[CompilerGenerated]
		private sealed class Class173<T>
		{
			public ConstructorInfo constructorInfo_0;

			public MethodBase methodBase_0;

			public object method_0(T gparam_0, object[] object_0)
			{
				return constructorInfo_0.Invoke(object_0);
			}

			public object method_1(T gparam_0, object[] object_0)
			{
				return methodBase_0.Invoke(gparam_0, object_0);
			}
		}

		[CompilerGenerated]
		private sealed class Class174<T>
		{
			public ConstructorInfo constructorInfo_0;

			public Type type_0;

			public T method_0()
			{
				return (T)Activator.CreateInstance(type_0);
			}

			public T method_1()
			{
				return (T)constructorInfo_0.Invoke(null);
			}
		}

		[CompilerGenerated]
		private sealed class Class175<T>
		{
			public PropertyInfo propertyInfo_0;

			public object method_0(T gparam_0)
			{
				return propertyInfo_0.GetValue(gparam_0, null);
			}
		}

		[CompilerGenerated]
		private sealed class Class176<T>
		{
			public FieldInfo fieldInfo_0;

			public object method_0(T gparam_0)
			{
				return fieldInfo_0.GetValue(gparam_0);
			}
		}

		[CompilerGenerated]
		private sealed class Class177<T>
		{
			public FieldInfo fieldInfo_0;

			public void method_0(T gparam_0, object object_0)
			{
				fieldInfo_0.SetValue(gparam_0, object_0);
			}
		}

		[CompilerGenerated]
		private sealed class Class178<T>
		{
			public PropertyInfo propertyInfo_0;

			public void method_0(T gparam_0, object object_0)
			{
				propertyInfo_0.SetValue(gparam_0, object_0, null);
			}
		}

		private static readonly Class170 class170_0 = new Class170();

		internal static Class167 Class167_0 => class170_0;

		public override Delegate3<T, object> ns20_002EClass167_002E_206A_206E_200E_202E_206E_200B_200B_200E_202C_206A_202A_202B_200C_206A_206C_206D_202B_200F_206E_200F_202C_200D_200D_202B_202B_206F_206D_206E_206D_206B_200B_206B_200B_200E_200D_202E_202A_206C_200F_202B_202E<T>(MethodBase methodBase_0)
		{
			Class204.smethod_2(methodBase_0, "method");
			ConstructorInfo constructorInfo_0 = methodBase_0 as ConstructorInfo;
			if (constructorInfo_0 != null)
			{
				return (T gparam_0, object[] object_0) => constructorInfo_0.Invoke(object_0);
			}
			return (T gparam_0, object[] object_0) => methodBase_0.Invoke(gparam_0, object_0);
		}

		public override Func<T> ns20_002EClass167_002E_206E_206D_200F_202C_202B_206A_206E_200E_202B_206A_206F_206A_202E_202C_206E_202D_202A_202D_202B_206F_206C_202D_206C_206C_202A_206E_200B_206A_202A_202C_206B_200C_206A_206A_200B_206D_206A_206E_200E_206E_202E<T>(Type type_0)
		{
			Class204.smethod_2(type_0, "type");
			if (type_0.smethod_12())
			{
				return () => (T)Activator.CreateInstance(type_0);
			}
			ConstructorInfo constructorInfo_0 = Class195.smethod_8(type_0, bool_0: true);
			return () => (T)constructorInfo_0.Invoke(null);
		}

		public override Func<T, object> ns20_002EClass167_002E_200B_200C_202E_200C_202A_206E_206E_202B_202E_206F_200F_200E_202C_200C_206D_206C_200C_206E_202D_206E_200C_202D_200E_206D_200D_206C_200F_202C_200F_206C_200B_202B_202E_200B_202D_206B_202E_206A_200D_200C_202E<T>(PropertyInfo propertyInfo_0)
		{
			Class204.smethod_2(propertyInfo_0, "propertyInfo");
			return (T gparam_0) => propertyInfo_0.GetValue(gparam_0, null);
		}

		public override Func<T, object> ns20_002EClass167_002E_200B_200C_202E_200C_202A_206E_206E_202B_202E_206F_200F_200E_202C_200C_206D_206C_200C_206E_202D_206E_200C_202D_200E_206D_200D_206C_200F_202C_200F_206C_200B_202B_202E_200B_202D_206B_202E_206A_200D_200C_202E<T>(FieldInfo fieldInfo_0)
		{
			Class204.smethod_2(fieldInfo_0, "fieldInfo");
			return (T gparam_0) => fieldInfo_0.GetValue(gparam_0);
		}

		public override Action<T, object> ns20_002EClass167_002E_206B_202C_206B_200B_202C_202E_200C_202C_200E_206B_206D_200B_202D_206A_200F_202D_206B_206D_200E_202C_206F_200D_206D_206B_206B_200D_200C_202E_206D_202A_200D_206B_202E_200F_200F_202D_206C_200C_200D_206E_202E<T>(FieldInfo fieldInfo_0)
		{
			Class204.smethod_2(fieldInfo_0, "fieldInfo");
			return delegate(T gparam_0, object object_0)
			{
				fieldInfo_0.SetValue(gparam_0, object_0);
			};
		}

		public override Action<T, object> ns20_002EClass167_002E_206B_202C_206B_200B_202C_202E_200C_202C_200E_206B_206D_200B_202D_206A_200F_202D_206B_206D_200E_202C_206F_200D_206D_206B_206B_200D_200C_202E_206D_202A_200D_206B_202E_200F_200F_202D_206C_200C_200D_206E_202E<T>(PropertyInfo propertyInfo_0)
		{
			Class204.smethod_2(propertyInfo_0, "propertyInfo");
			return delegate(T gparam_0, object object_0)
			{
				propertyInfo_0.SetValue(gparam_0, object_0, null);
			};
		}
	}
}
